<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
	"http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<title>phc -- Documentation</title>
		<link rel="stylesheet" type="text/css" href="phc.css">
	</head>
	<body>
		<table width="100%" cellpadding="0" cellspacing="0">
		<tr>
			<td class=grey><img src="img/header.png" alt="phc logo"></td>
		</tr>
		<tr>
			<td class=linkbar>
				<a href="index.html">Home</a> | 
				<a href="downloads.html">Download <span class=phc>phc</span></a> | 
				<a href="documentation.html">Documentation</a> | 
				<a href="contribute.html">Developers and Contributors</a> |
				<a href="mailinglist.html">Mailing List</a> |
			</td>
		</tr>
		</table>
		<table class=maintable>
		<tr>
			<td>
				<h1>Documentation</h1>
				
				<h2>User and Developer Manual</h2>

				<p>
					<ul>
						<li>
							<a href="doc/latest/manual.html#users-manual">User Manual</a>
							<ul>
								<li> how to configure, compile, install, and test <span
								class="phc">phc</span>,</li>

								<li> how to use <span class="phc">phc</span>'s XML
								output, and <span class="phc">phc</span>'s command line
								options.</li>
							</ul>
						</li>

						<br />

						<li>
							<a href="doc/latest/manual.html#developers-manual">Developers Manual</a>
							<ul>
								<li>how to create plugins to analyse or manipulate PHP
								using <span class="phc">phc</span>,</li>

								<li>how to modify <span class="phc">phc</span>'s
								internals</li>
							</ul>
						</li>

					</ul>
				</p>


				Both the user and the developer manual are available in the same
				document. The latest version (0.3.0) is available to download (<a
				href="src/archive/phc-0.3.0.pdf">PDF</a> or <a
				href="src/archive/phc-0.3.0-html.tar.gz">HTML</a>) or <a
				href="doc/latest/manual.html">online</a>.  We don't
				recommend any other version, though previous versions are <a
				href="src/archive/">archived</a>.</p>

				<h2>Other Documentations</h2>

				<p>
					<ul>
						<li>
							<cite>
							<a name="frontend" href="https://www.cs.tcd.ie/publications/tech-reports/reports.07/TCD-CS-2007-47.pdf">
							Design and Implementation of a PHP Compiler Front-end</a>.
							Edsko de Vries and John Gilbert</cite>.
							<ul><li>A technical report describing the <span class=phc>phc</span>
							front-end, including its strategy for lexing, parsing and
							unparsing, and the design of its AST.</li></ul>
						</li>

						<br />

						<li>
							<cite>
								<a name="maketea" href="doc/maketea.pdf">Processing ASTs in C++: maketea</a>.
								Edsko de Vries, John Gilbert and David M Abrahamson</cite>.
							<ul><li>
								A short paper, describing <i>maketea</i> and the AST visitors and
								transformers.
							</li></ul>
						</li>

						<br />

						<li>
							<cite>
								<a name="sac2009" href="https://www.cs.tcd.ie/~pbiggar/sac-2009.pdf">
								A Practical Solution for Scripting Language Compilers</a>.
							Paul Biggar, Edsko de Vries, and David Gregg</cite>.
							(<a href="https://www.cs.tcd.ie/~pbiggar/#sac-2009">abstract</a>,
							<a href="https://www.cs.tcd.ie/~pbiggar/sac-2009.bib">bibtex</a>)

							<ul><li>
								A paper describing the integration of the <i>PHP embed SAPI</i> with
								<span class="phc">phc</span>, in particular for
								supporting PHP's semantics, and for code generation.
							</li></ul>
						</li>

						<br />

						<li>
							<cite>
								<a name="talk2009" href="https://www.cs.tcd.ie/~pbiggar/#phc-talks">
								Compiling and Optimizing Scripting Languages</a>.
								Paul Biggar and David Gregg</cite>.
							(<a href="https://www.cs.tcd.ie/~pbiggar/#phc-talks">abstract</a>,
							<a href="http://www.youtube.com/watch?v=kKySEUrP7LA">video</a>,
							<a href="https://www.cs.tcd.ie/~pbiggar/paul_biggar_google_18_mar_2009.pdf">slides</a>,
							<a href="https://www.cs.tcd.ie/~pbiggar/paul_biggar_google_18_mar_2009_notes.pdf">slides with notes</a>)

							<ul><li>
								A talk giving an overview of <span
								class="phc">phc</span>, its code-generation and
								integration with the PHP embed SAPI, and the
								optimization framework being developed on the
								<i>dataflow</i> branch.
							</li></ul>
						</li>
	
					</ul>
				</p>

				<h2>Articles</h2>

				<ul>
					<li>
						<cite>
							<a href="articles/reentrantparser.html">
							Writing a Reentrant Parser with Flex and Bison</a>.
							Edsko de Vries</cite>.
						<ul><li>
							Writing a Reentrant Parser with Flex and Bison explains by
							means of an example how to create a reentrant parser with
							Flex and Bison, and how to use more than one parser in one
							application.
						</li></ul>
					</li>

					<br />

					<li>
						<cite>
							<a href="articles/virtualinheritance.html">
							Memory Layout for Multiple and Virtual Inheritance</a>.
							Edsko de Vries</cite>.
						<ul><li>
							Programmers wishing to enhance their knowledge of C++
							might find Memory Layout for Multiple and Virtual
							Inheritance an interesting article. It explains the
							difficulties C++ compilers face when deciding the
							(runtime) layout for objects in the presence of multiple
							inheritance, and the consequences this has for
							programmers.
						</li></ul>
					</li>
				</ul>

				<h2>Research Papers using phc</h2>

				<ul>
					<li>
						<cite>
							<a href="http://dcc.ufmg.br/~rimsa/papers/rimsa-sblp.pdf">
							Efficient Static Check of Tainted Variable Attacks</a>.
							Rimsa, A., d'Amorim, M., and Pereira, F. Q. In SBLP 2010</cite>.
						<ul><li>
							A paper describing a technique that finds tainted flow vulnerabilities. It uses this method, implemented on top of <span class="phc">phc</span>, to search for XSS attacks.
						</li></ul>
					</li>
				</ul>
			</td>
		</tr>
		</table>
		<table class=linkbar>
			<tr><td>$LastChangedDate: 2011-09-20 21:47:03 +0000 (Tue, 20 Sep 2011) $.</td></tr>
		</table>
		<script type="text/javascript">
		var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
		document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
		</script>
		<script type="text/javascript">
			var pageTracker = _gat._getTracker("UA-1942036-1");
			pageTracker._trackPageview();
		</script>
	</body>
</html>
